1. Field of the Invention
This invention relates to the transfer of input data from manually controlled devices to computer systems, and more particularly to systems and methods for inexpensively and adaptively interfacing between one or more types and configurations of input devices and a host via the Universal Serial Bus ("USB") structure and protocol.
2. Background of the Prior Art
In the earliest versions of computer architecture, a computer or other central processor was connected to operate with one or a number of input, output, and storage devices, each operating in accordance with its own peripheral unit properties and specifications, including data rate, data format and prescriptors, directionality, operating mode, interchange protocols and synchronicity. Since these systems were unitary in the sense that each computer with its associated peripherals stood alone, each peripheral was typically interconnected by an interface section. The circuits and software in the computer controlled data transfer, usually employing buffers. The overhead involved in coaction with the peripherals was a substantial but usually separate burden on the computer system.
With the advent of the microprocessor, a more direct link could be established with some peripherals, because the microprocessor speed and often limited functions enabled it to be used to share some peripheral functions, whether input or output, as by sensing the keys actuated on a keyboard, and refreshing the display on a video screen. The peripherals, however, often had to be specially made or adapted for operation with the microprocessors. Different microprocessors and software approaches limited the interchangeability of peripherals and often required the use of special adapters and installation procedures.
In the same era, communication systems were being expanded to function with different input and output units, including facsimile machines, keyboards and the like. Telephonic digital communications principally involved the use of modems during line transmission and reception, so that further hardware or software came into use in order for these functions to become interactive with personal computers.
There is now a vast inventory of synchronously and asynchronously operable peripherals and PC configurations, mass manufactured for the consumer market. There are also an increasing number of wired and wireless communications systems and devices, many with adjustable human input devices. Low cost peripheral devices, such as keyboards, mouse devices, joy sticks, and touch screens, should be usable for both types of applications in the current and developing state of the art.
Recognizing the need for a universal methodology upon which systems and peripherals can be built, a number of large organizations in the industry devised and accepted a standardized format known as the Universal Serial Bus ("USB"). This is based upon a particular architecture and protocol defined in a specification published as Specification Version 1.0 on Jan. 15, 1996 by Compaq, DEC, IBM, Intel, Microsoft, and Northern Telecom. The USB enables "plug and play" attachment of one or a number of "devices" (which can be a single hardware component or a collection of hardware components, a defined function or a hub) for flow of communication between a source and a sink of information. Different speeds and bandwidths can be accommodated and control information, error correction information, and data transfer blocks are included and defined. Thus, with host computer systems arranged to connect and function with prescribed connections and formats, system and device designers can address a wider market for hardware, including both PC and communication technologies. With this standardized but highly versatile context, PC configurations can be changed and upgraded without requiring corresponding and resultant changes in communication links, software, or I/O devices. The USB overcomes the burdens imposed by disparities of speed and data rates, and provides a low cost, bidirectional low-to-mid speed interconnect that is useful with a wide range of PC architectures. It enables devices and ports to be added with the desired "plug and play" ease.
In the USB approach, many human input devices are essentially passive, and must operate within the power limitations of the bus, and respond to requests for current data. While this simplifies engineering design in many respects, much more is involved if mass produced human input devices are to be attached inexpensively. For example, keyboard, mouse, and joystick devices will vary as to the number, arrangement, and designation of actuator elements. Even from the same vendor, one keyboard matrix may be different from others to meet specific needs. Human input devices may be asynchronous, such as a keyboard, or synchronous, such as a PS/2 mouse. In addition, since programs inherently call for the key combinations, generation of meaningful data for transmission to a processor can require processing to determine the command selected by the operator. It is particularly advantageous to provide a unit which can perform legacy support allowing existing keyboard and PS/2 mouse combinations to operate within the emerging USB interface construct.
It is desirable to provide a unit which can collect data from one or more human input devices of a number of different types with minimal modification to account for variables, so as to make it possible to achieve economies of scale. The variety of input devices, and input device types, and the specific demands imposed by the USB, however, present formidable barriers to achieving a low cost system which is capable of accommodating the different variations used by peripheral device manufacturers, while functioning in the USB system.